Willkommen Gast. Bitte einloggen oder registrieren.
Übersicht Hilfe Suche Einloggen Registrieren

+  BrettspielWelt
|-+  Technische Fragen
| |-+  Puppet-Stuff (Moderator: SLC)
| | |-+  Überlauf bei verschachtelten Actions ?
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Überlauf bei verschachtelten Actions ?  (Gelesen 92 mal)
GewinnerTyp
Zaubergeselle
***
Geschlecht: Männlich
Beiträge: 227


~ www.BrettspielWelle.de - Das Fun Radio - Bei uns spielt nicht nur die Musik ! ~

236104673
Profil anzeigen WWW
« am: 20.02.2004, 13:40:43 »

Hi,

habe mal eine Frage zu Verschachtelungen von Actions:

Angenommen aus der start-Action wird u.a. in eine Action xyz verzweigt.
Diese Action wiederrum enthält (u.a.) den erneuten Aufruf der start Action (DO start).
Bestünde die Gefahr eines "Überlaufs" ? Oder hat die start Action bezüglich des "merkens" von Rücksprungsadressen intern eine besondere Bedeutung ?

Danke !

Gruß
GewinnerTyp
Gespeichert

SLC
Magier
*****
Geschlecht: Männlich
Beiträge: 14510


Ich heiße SLC, komme aus Hamburg und spiele gern (wer denn nicht?)

SLC_BSW
Profil anzeigen WWW
« Antworten #1 am: 20.02.2004, 20:15:35 »

Huhu!

Die ACTION start hat diesbezüglich keine Sonderbedeutung,
allerdings sehe ich keinen Grund, sie jemals direkt aufzurufen.
Indirekt wird sie durch MASTERRESET aufgerufen...

Rekursive Aufrufe sind grundsätzlich in vollem Umfang möglich,
sie belasten halt nur den Call-Stack, der begrenzt ist (wenn
auch großzügig) und führen auch einmal zu einem OVERFLOW,
dessen Reaktion Du mit "OVERFLOW: ..." und "WHEN ERROR DO ..."
steuern kannst (in gewissen Grenzen)...

LOCAL-Variablen werden bei rekursiven Aufrufen übrigens auch
voll unterstüzt, das heißt, bei jedem Aufruf wird eine neue
Instanz einer lokalen Variable angelegt, die unabhängig ist.

Grüße, SLC
Gespeichert
GewinnerTyp
Zaubergeselle
***
Geschlecht: Männlich
Beiträge: 227


~ www.BrettspielWelle.de - Das Fun Radio - Bei uns spielt nicht nur die Musik ! ~

236104673
Profil anzeigen WWW
« Antworten #2 am: 21.02.2004, 13:11:03 »

Hi SLC !

jow, auf MASTERRESET bin ich dann auch gekommen. thx ! Smiley
OVERFLOW und ERROR setzte ich sowieso immer.

Muss man LOCAL Variablen verschiedener Instanzen unterschiedlich aufrufen oder gilt gerade die der jeweiligen Instanz ? Ich vermute mal ja... teste es aber noch...  Grin
(jedenfalls gut zu wissen)

Mein Problem: Möchte auf Eingaben innerhalb einer ACTION reagieren (also eine Tastatureingabe abfragen, die normalerweise mit WHEN KEYWORD bla FROM * DO xyz).
Funzt abba net.  Sad
Er durchrennt die WHILE schleife, reagiert aber nicht mehr auf WHEN KEYWORD...
Auch im DEBUGGING kann man nicht erkennen warum net...

Zitat

ACTION funztnet
SET taste 0
WHILE [taste] == 0 DO
 BEGIN
   WHEN KEYWORD würfeln FROM [WHO] DO würfeln
   WHEN KEYWORD stop FROM * DO ende
 END
END


In der ACTION würfeln setze ich dann natürlich taste auf 1

any ideas ?  Smiley

Gruß
GewinnerTyp
Gespeichert

SLC
Magier
*****
Geschlecht: Männlich
Beiträge: 14510


Ich heiße SLC, komme aus Hamburg und spiele gern (wer denn nicht?)

SLC_BSW
Profil anzeigen WWW
« Antworten #3 am: 21.02.2004, 15:49:19 »

Huhu!

Alle "WHEN"-Statements "tun erstmal nichts"!
Sie mehrfach zu setzen, macht auch wenig Sinn.

Was passiert z.B. bei "WHEN KEYWORD ..."?

Es wird ein "Trigger" gesetzt, also eine Reaktionsfunktion
auf ein Ereignis. Diese Reaktionsfunktion (ACTION) wird nicht
sofort ausgelöst, sondern (unabhängig vom Programmablauf der
aktuellen ACTION) dann, wenn das Ereignis mal auftritt (und
selbst dann wird die aktuelle ACTION und ggfs. vorher auftretende
Reaktionen noch vorher abgearbeitet).

Die Reaktionsfunktion wird so lange auf das angegebene Ereignis
reagieren, bis mal "IGNORE KEYWORD" mit demselben Keyword dahinter
oder "IGNOREALL KEYWORD" aufgerufen wird!

Beispiel für eine Anwendung von WHEN KEYWORD:

Code:
ACTION start
 WHOIS STARTER
 SET starter [WHO]
 WHEN KEYWORD huhu FROM [starter] DO reaktion
END

ACTION reaktion
 >> Grüß Dich, großer Meister!
END

Grüße, SLC
Gespeichert
GewinnerTyp
Zaubergeselle
***
Geschlecht: Männlich
Beiträge: 227


~ www.BrettspielWelle.de - Das Fun Radio - Bei uns spielt nicht nur die Musik ! ~

236104673
Profil anzeigen WWW
« Antworten #4 am: 21.02.2004, 18:00:02 »

Hi SLC,

ich merk' schon, ich muss meinen Programmierstil wohl völlig umkrempeln...  Grin

Zitat
selbst dann wird die aktuelle ACTION und ggfs. vorher auftretende
Reaktionen noch vorher abgearbeitet).


...DER entscheidende Hinweis !

DANKE ! "großer Meister" !  Grin

Gruß
GewinnerTyp
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines
SMFAds for Free Forums
Prüfe XHTML 1.0 Prüfe CSS